package 每日一题;

/**
 2485. 找出中枢整数
 给你一个正整数 n ，找出满足下述条件的 中枢整数 x ：

 1 和 x 之间的所有元素之和等于 x 和 n 之间所有元素之和。
 返回中枢整数 x 。如果不存在中枢整数，则返回 -1 。题目保证对于给定的输入，至多存在一个中枢整数。



 示例 1：

 输入：n = 8
 输出：6
 解释：6 是中枢整数，因为 1 + 2 + 3 + 4 + 5 + 6 = 6 + 7 + 8 = 21 。
 示例 2：

 输入：n = 1
 输出：1
 解释：1 是中枢整数，因为 1 = 1 。
 示例 3：

 输入：n = 4
 输出：-1
 解释：可以证明不存在满足题目要求的整数。


 提示：

 1 <= n <= 1000
 *
 */
public class D230626_T2485 {

    // 使用双指针 左指针记录左边的和 右指针记录右边的和 左<右 则左指针移动 右<左 则右指针移动
    public static int pivotInteger(int n) {

        int leftSum = 1;
        int rightSum = n;

        int left = 1;
        int right = n;

        while (left < right) {
            if (leftSum <= rightSum) {
                left++;
                leftSum += left;
            } else {
                right--;
                rightSum += right;
            }
        }

        //如果左右两边的指针相等 并且左边的和 等于右边的和 找到答案
        if (left == right && leftSum == rightSum) {
            return left;
        } else {
            return -1;
        }

    }

    public static void main(String[] args) {
        int i = pivotInteger(8);
    }

}
